<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
        unshift() 方法可向数组的开头添加一个或更多元素，并返回新的长度
        该方法将改变数组的数目
        添加到末尾 使用push（）
        */

        // unshift()方法
        var arr = [1, 2, 3];
        var arr1 = arr.unshift(4, 5);
        console.log(arr, arr1); // 添加到开头 输出 [4,5,1,2,3] 5个长度



        // unshift() 封装
        var arr = [1, 2, 3];
        function unshift2(arr) {
            var len = arguments.length - 1; // 里面arr 占了一个位置 所以减1 得到unshift2的3个值
            for (var i = arr.length - 1; i >= 0; i--) { // 数组长度从0开始 减一 得到写的三个元素长度
                arr[i + len] = arr[i];
            }
            for (var j = 1; j < arguments.length; j++) {
                arr[j - 1] = arguments[j];
            }
            return arr.length;
        }
        unshift2(arr, 10, 11, 12);
        console.log(arr); // 输出 [10, 11, 12, 1, 2, 3]



        console.log('-----------------------');


        /* 
        arguments
        */
        function w() {
            console.log(arguments);
        }

        w(1, 2, 3, 4, 5);

        /* 
    输出一个伪数组 键值对 保存用户输入的实参数据
    用于实参个数不确定的情况           
    Arguments(5) [1, 2, 3, 4, 5, callee: ƒ, Symbol(Symbol.iterator): ƒ]
            0: 1
            1: 2
            2: 3
            3: 4
            4: 5
        
        */

        /* 
          arguments:一般用于实参个数不确定的情况
              1，每个函数自带的，系统帮我们生成的一个关键字
              2.它是一个伪数组，保存了用户输入的实参
          */
        // 需求：让用户输入若干个数字，求和

        function sum() {
            console.log(arguments);
            let result = 0;
            for (let i = 0; i < arguments.length; i++) {
                result = result + arguments[i];
            }
            return result;

        }
        console.log(sum(1, 3, 5, 7, 9));
    </script>
</body>

</html>